package com.googlecode.gingerman;

//import com.googlecode.gingerman.world.MapRandom;
//import com.googlecode.gingerman.world.Map1;
import com.googlecode.gingerman.world.Map2;
import com.googlecode.gingerman.world.World;

import ui.Scene;

public class Main {
	/**
	 * @param args
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException {
		
		Scene poligon = new Scene(1024, 640, "images", "white");
		poligon.setTitle("Battle of Gingermen");
		World world = new World(1024, 640);
		double radius = 30;
		double wallWidth=30, wallHeigth=30;
		
		/*Здесь можно подключить только одну из созданных карт.*/
		
		//new Map1(poligon,world,radius,wallWidth,wallHeigth);
		new Map2(poligon,world,radius,wallWidth,wallHeigth);
		//new MapRandom(poligon,world,radius,wallWidth,wallHeigth,20,4);
		
		boolean gameover = true;
		int sizecmd1 = 0;
		int sizecmd2 = 0;
		int extramoves=40; //дополнительное кол-во ходов после конца игры
		
		/*Игровой цикл. Работает до тех пор, пока все колобки одной из команд погибнут.*/
		
		while (gameover || extramoves>0) 
		{
			for (int i = 0; i < world.getRobots().size(); i++)
				if (world.getRobots().get(i).getIDCmd() == 0)
					sizecmd1++;
				else
					sizecmd2++;
			if (sizecmd1 == 0 || sizecmd2 == 0){
				gameover = false;
				extramoves--;
			}
			
			else {sizecmd1=0; sizecmd2=0;}
			
			for (int i = 0; i < world.getRobots().size(); i++)
				world.getRobots().get(i).step();
			
			for (int i = 0; i < world.getBullets().size(); i++)
				world.getBullets().get(i).step();

			for (int i = 0; i < world.getBulletsTmpAdd().size(); i++){
				poligon.addObject(world.getBulletsTmpAdd().get(i));
				world.getBulletsTmpAdd().remove(i);
			}
			
			for (int i = 0; i < world.getBulletsTmpAdd().size(); i++)
				world.getBulletsTmpAdd().remove(i);
			
			for (int i = 0; i < world.getBulletsTmpDel().size(); i++)
				poligon.removeObject(world.getBulletsTmpDel().get(i));
		
			for (int i = 0; i < world.getBulletsTmpDel().size(); i++)
				world.getBulletsTmpDel().remove(i);
			
			for (int i = 0; i < world.getRobotsDel().size(); i++){
				poligon.removeObject(world.getRobotsDel().get(i).getGhealth());
				poligon.removeObject(world.getRobotsDel().get(i));
			}
			
			for (int i = 0; i < world.getRobotsDel().size(); i++)
				world.getRobotsDel().remove(i);
			
			Thread.sleep(40); //1000/40=25 (двадцать пять кадров в секунду)
			poligon.repaint();
		}
		
		for (int i = 0; i < world.getBullets().size(); i++)
			poligon.removeObject(world.getBullets().get(i));
		
		poligon.repaint();

	}

}
